/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Produccion.Controlador;

import com.dp1.pucp.Modelo.Algoritmos.Solucion;
import com.dp1.pucp.Modelo.Clases.Demanda;
import com.dp1.pucp.Modelo.Clases.Maquina;
import com.dp1.pucp.Modelo.Clases.Productosimulacion;
import com.dp1.pucp.Modelo.Clases.Simulacion;
import com.dp1.pucp.Produccion.Vista.AsignarSimulacionGUI;
import com.dp1.pucp.Produccion.Vista.DetalleExaminarSimulacionGUI;
import com.dp1.pucp.Simulacion.DAO.SimulacionDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

/**
 *
 * @author Rodrigo
 */
public class AsignarSimulacionControlador {
    
    private AsignarSimulacionGUI asignarSimulacionview;
    private ArrayList<Simulacion> arregloSimulaciones;
    private ArrayList<Solucion> arregloSoluciones;
    private Demanda demanda;
    private int bandera;
    private JFrame padre;
    
    public AsignarSimulacionControlador(AsignarSimulacionGUI asignarSimulacionview, ArrayList<Simulacion> arregloSimulaciones, Demanda demanda,int bandera,ArrayList<Solucion> arregloSoluciones){
        this.asignarSimulacionview=asignarSimulacionview;
        this.arregloSimulaciones=arregloSimulaciones;
        this.arregloSoluciones=arregloSoluciones;
        this.demanda=demanda;
        this.bandera=bandera;
        this.asignarSimulacionview.addAsignarListener(new asignarListener());
        this.asignarSimulacionview.addCerrarListener(new cerrarListener());
        this.asignarSimulacionview.addExaminarListener(new examinarListener());
        ActualizarTabla();
        
    }
    
    public JFrame getPadre(){
        return padre;
    }
    public void ActualizarTabla(){
        
        this.LimpiarDatos();
        this.llenaGrilla(this.arregloSimulaciones);
    }
    
    public void LimpiarDatos(){    
        ((DefaultTableModel) asignarSimulacionview.getTabla().getModel()).setRowCount(0); 
    }
    
    public void llenaGrilla(ArrayList<Simulacion> lista){   
       
        if(lista!=null){ 
            
            ((DefaultTableModel) asignarSimulacionview.getTabla().getModel()).setRowCount(0);

            for (int i = 0; i<lista.size();i++){
                ((DefaultTableModel) asignarSimulacionview.getTabla().getModel()).setRowCount(asignarSimulacionview.getTabla().getRowCount()+1);
                asignarSimulacionview.getTabla().setValueAt(lista.get(i).getProduccion(),i,0);
                asignarSimulacionview.getTabla().setValueAt(lista.get(i).getMerma(),i,1);
                
                asignarSimulacionview.getTabla().setValueAt(cantSoda(lista.get(i)),i,2);
                asignarSimulacionview.getTabla().setValueAt(cantDecorada(lista.get(i)),i,3);
                asignarSimulacionview.getTabla().setValueAt(cantRellena(lista.get(i)),i,4);
             }
        }
    }
    
    private int cantSoda(Simulacion simulacion){
        int valor=0;
        SimulacionDAO dao = new SimulacionDAO();
        ArrayList<Productosimulacion> arreglo = dao.getProductosSimulacion(simulacion);
        for (int i=0; i<arreglo.size();i++){
            if (arreglo.get(i).getTipoproducto().getIdtipoproducto()==9){
                valor= arreglo.get(i).getCantProducida();
                System.out.println("SODA: "+valor);
            }
        }
        return valor;      
    }
    
    private int cantDecorada(Simulacion simulacion){
        int valor=0;
        SimulacionDAO dao = new SimulacionDAO();
        ArrayList<Productosimulacion> arreglo = dao.getProductosSimulacion(simulacion);
        for (int i=0; i<arreglo.size();i++){
            if (arreglo.get(i).getTipoproducto().getIdtipoproducto()==10){
                valor= arreglo.get(i).getCantProducida();
            }
        }
        return valor;       
    }
    
    private int cantRellena(Simulacion simulacion){
        int valor=0;
        SimulacionDAO dao = new SimulacionDAO();
        ArrayList<Productosimulacion> arreglo = dao.getProductosSimulacion(simulacion);
        for (int i=0; i<arreglo.size();i++){
            if (arreglo.get(i).getTipoproducto().getIdtipoproducto()==11){
                valor= arreglo.get(i).getCantProducida();
            }
        }
        return valor;       
    }
    
    class asignarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
           int sel=asignarSimulacionview.getFilaSel();
           if (sel!=-1){
               Simulacion simu = arregloSimulaciones.get(sel);
               demanda.setSimulacion(simu);
               asignarSimulacionview.mostrarAviso("Se asigno simulacion");
               bandera=1;
           }
           else {
               asignarSimulacionview.mostrarError("Debe seleccionar una simulacion");
           }
           
        }
        
    }
    
    class cerrarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {          
            asignarSimulacionview.dispose();           
        }
        
    }
    
    class examinarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {  
           int sel=asignarSimulacionview.getFilaSel();
           if (sel!=-1){
            DetalleExaminarSimulacionGUI gui = new DetalleExaminarSimulacionGUI(getPadre(),true);
            DetalleExaminarSimulacionControlador controlador = new DetalleExaminarSimulacionControlador(gui,arregloSimulaciones.get(asignarSimulacionview.getFilaSel()),arregloSoluciones.get(asignarSimulacionview.getFilaSel()));
            gui.setVisible(true);
            }
           else {
               asignarSimulacionview.mostrarError("Debe seleccionar una simulacion");
           }      
        }
        
    }
    
    
    
    
}
